package mx.frantor.catalogos.bussines;

import java.math.BigInteger;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.StringTokenizer;

import flex.messaging.io.ArrayCollection;
import mx.frantor.catalogos.dao.OrdenesDeCompraDAO;
import mx.frantor.catalogos.daoimp.OrdenesDeCompraDAOImpl;
import mx.frantor.catalogos.entitys.OrdendecompramateriaprimaEntity;
import mx.frantor.catalogos.entitys.OrdenesDeCompraEntity;
import mx.frantor.catalogos.bussines.OrdendeCompraMateriaPrimaBussines;;

public class OrdenesdeCompraBussines {
	OrdenesDeCompraDAO OrdenCompDAO = new OrdenesDeCompraDAOImpl();
	OrdendeCompraMateriaPrimaBussines  ordCBus = new OrdendeCompraMateriaPrimaBussines(); 
	DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
	java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("dd/MM/yyyy");
	java.text.SimpleDateFormat sdh=new java.text.SimpleDateFormat("k:mm");

	String res;
	Long maxReq;
	long maxCons;
	
	public String AgregarOrdenDeCompra(Date fecha, Float subtotal, Float total, String proveedor, ArrayCollection detalleRequisicion){
		OrdenesDeCompraEntity ordcomp = new OrdenesDeCompraEntity();
		ordcomp.setFecha(fecha);
		ordcomp.setSubtotal(subtotal);
		ordcomp.setTotal(total);
		ordcomp.setProveedor(proveedor);
		res="";
		//res = OrdenCompDAO.agregarOrdenesDeCompra(ordcomp);
		 OrdenCompDAO.agregarOrdenDeCompraConDetalle(ordcomp, detalleRequisicion);
			
	return res;
	}

	public String agregarRequisicionConDetalle(Date fecha, Float subtotal, Float total, 
		ArrayCollection reqOrd) {
		String res = null;
		try {
		if(OrdenCompDAO.getMaxConsRequisicion() == null){
			maxCons=1;
		}else{
			maxCons = OrdenCompDAO.getMaxConsRequisicion().longValue() + 1;
		}
		OrdenesDeCompraEntity ordcomp = new OrdenesDeCompraEntity();
		
		ordcomp.setSubtotal(subtotal);
		ordcomp.setFecha(fecha);
		ordcomp.setTotal(total);
		res=null;
		} catch (Exception e) {
			// TODO: handle exception

			System.out.println("Error Almacenes Busssines " + e);
		}
		return res;
		}
	
	
	public BigInteger getMaxIdReq(){
		BigInteger maxId = OrdenCompDAO.getMaxIdRequisicion();
		return maxId;
	}
	
	
	public BigInteger getMaxCons(){
		BigInteger maxCons = OrdenCompDAO.getMaxConsRequisicion();
		return maxCons;
	}
	
	
	public String modificarOrdenDeCompra(Long idOrdenDeCompra, Date fecha, Float subtotal, Float total, String proveedor){
		OrdenesDeCompraEntity ordcomp = new OrdenesDeCompraEntity();
		
		ordcomp.setIdOrdenDeCompra(idOrdenDeCompra);
		ordcomp.setSubtotal(subtotal);
		ordcomp.setFecha(fecha);
		ordcomp.setTotal(total);
		ordcomp.setProveedor(proveedor);
		res = OrdenCompDAO.modificarOrdenesDeCompra(ordcomp);
		
		return res;	
	}

	public String eliminarOrdenDeCompra(Long idOrdenDeCompra){
		
res = OrdenCompDAO.eliminarOrdenesDeCompra(idOrdenDeCompra);
		
		return res;
	}

	public List<OrdenesDeCompraEntity> getTodosOrdenesDeCompra(){
		List<OrdenesDeCompraEntity> lstordComp = OrdenCompDAO.getTodosOrdenesDeCompraActivas();
		for(OrdenesDeCompraEntity ordComp:lstordComp){
			try{
				ordComp.setSFecha(sdf.format(ordComp.getFecha()));
				
			}catch(Exception err){
				java.util.Date fech = new java.util.Date();
				ordComp.setSFecha(sdf.format(fech));
			}
		}
		
		return lstordComp;	
	}
	
	public OrdenesDeCompraEntity getOrdenesdeCompraId(Long idOrdenDeCompra){
		OrdenesDeCompraEntity ordComp = OrdenCompDAO.getOrdenesDeComprasId(idOrdenDeCompra);
		try{
			ordComp.setSFecha(sdf.format(ordComp.getFecha()));
			
		}catch(Exception err){
			java.util.Date fech = new java.util.Date();
			ordComp.setSFecha(sdf.format(fech));
		}
		return ordComp;
	}
	
	public List<OrdenesDeCompraEntity> getOrdenesdeCompraPorId(Long idOrdenDeCompra){
		List<OrdenesDeCompraEntity> lstordComp = OrdenCompDAO.getOrdenesDeCompraPorId(idOrdenDeCompra);
		for(OrdenesDeCompraEntity ordComp:lstordComp){
			try{
				ordComp.setSFecha(sdf.format(ordComp.getFecha()));
				
			}catch(Exception err){
				java.util.Date fech = new java.util.Date();
				ordComp.setSFecha(sdf.format(fech));
			}
		}
		return lstordComp;
	}
	
	
	public String eliminaOrdenConDetalle(long idOrden){
		String res = null;
		try {	
		List<OrdendecompramateriaprimaEntity> lstDetRequisicion = ordCBus.getOrdenCMPPorId(idOrden);
		
		if(!lstDetRequisicion.isEmpty()){
			for(int cont = 0; cont < lstDetRequisicion.size(); cont++){
				ordCBus.EliminarOCMP(lstDetRequisicion.get(cont).getIdRelacion());
			}
		}
		res = OrdenCompDAO.eliminarOrdenesDeCompra(idOrden);
		} catch (Exception e) {
			// TODO: handle exception

			System.out.println("Error Almacenes Busssines " + e);
		}
		System.out.println("mensaje" + res);
		return res;

	}
	
}
